package com.ningxun.pagent.bus.service.aichat;

import com.baomidou.mybatisplus.extension.service.IService;

import com.fasterxml.jackson.databind.JsonNode;
import com.ningxun.pagent.bus.domain.BusPolicyContent;
import com.ningxun.pagent.bus.domain.aichat.BaseAIChat;
import com.ningxun.pagent.bus.domain.aichat.ChatRequest;
import com.ningxun.pagent.bus.domain.aichat.Query;
import com.ningxun.pagent.bus.domain.aichat.Question;
import com.ningxun.pagent.bus.domain.wechatuser.UserConversationFavorite;
import reactor.core.publisher.Flux;

import java.util.List;

public interface IBaseAIChatService extends IService<BaseAIChat> {

    public Flux<String> chatMessages(ChatRequest payload);

    /**
     * 获得回答的政策来源
     *
     */
    public List<BusPolicyContent> getResId(Query query);

    /**
     * 新增根据上下文预测用户的问题：
     */
    public List<Question> getQuery(Query Beginquery);

    /**
     * 评价对话质量
     */
    public boolean evaluateChat(UserConversationFavorite userConversationFavorite);

    /**
     * 查询消息
     *
     * @param messageId 消息主键
     * @return 消息
     */
    public BaseAIChat selectBaseAIChatByMessageId(Long messageId);

    /**
     * 查询消息列表
     *
     * @param baseAIChat 消息
     * @return 消息集合
     */
    public List<BaseAIChat> selectBaseAIChatList(BaseAIChat baseAIChat);

    /**
     * 新增消息
     *
     * @param baseAIChat 消息
     * @return 结果
     */
    public int insertBaseAIChat(BaseAIChat baseAIChat);

    /**
     * 修改消息
     *
     * @param baseAIChat 消息
     * @return 结果
     */
    public int updateBaseAIChat(BaseAIChat baseAIChat);

    /**
     * 批量删除消息
     *
     * @param messageIds 需要删除的消息主键集合
     * @return 结果
     */
    public int deleteBaseAIChatByMessageIds(Long[] messageIds);

    /**
     * 删除消息信息
     *
     * @param messageId 消息主键
     * @return 结果
     */
    public int deleteBaseAIChatByMessageId(Long messageId);
}
